﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DataAccess;
using System.Data;
using System.Data.SqlClient;
using Support.DTO;

namespace DataAccess
{
    public class ConsultaInicialDAL : BaseSQLDAL
    {
        public int GuardarConsultaInicial(ConsultaInicialDTO consulta)
        {
            try
            {
                CreateCommand("ConsultaInicial_Guardar", true);
                AddCmdParameter("@Total", string.IsNullOrEmpty(consulta.AutoValidoTotal) ? "" : consulta.AutoValidoTotal, ParameterDirection.Input);
                AddCmdParameter("@Parcial", string.IsNullOrEmpty(consulta.AutoValidoParcial) ? "" : consulta.AutoValidoParcial, ParameterDirection.Input);
                AddCmdParameter("@Dependiente", string.IsNullOrEmpty(consulta.Dependiente) ? "" : consulta.Dependiente, ParameterDirection.Input);
                AddCmdParameter("@Motivo", string.IsNullOrEmpty(consulta.MotivoConsulta) ? "" : consulta.MotivoConsulta, ParameterDirection.Input);
                AddCmdParameter("@AntecedentesEnfermedad", string.IsNullOrEmpty(consulta.AntecedentesEnfermedad) ? "" : consulta.AntecedentesEnfermedad, ParameterDirection.Input);
                AddCmdParameter("@HistoriaId", consulta.HistoriaId, ParameterDirection.Input);

                ExecuteReader();
                Read();

                return Convert.ToInt32(GetOutResult("consulta_id"));
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                DisposeCommand();
                //DisposeDataReader();
                CloseConnection();
            }
        }

        public void Modificar(ConsultaInicialDTO consulta)
        {
            try
            {
                CreateCommand("ConsultaInicial_Modificar", true);
                AddCmdParameter("@Total", string.IsNullOrEmpty(consulta.AutoValidoTotal) ? "" : consulta.AutoValidoTotal, ParameterDirection.Input);
                AddCmdParameter("@Parcial", string.IsNullOrEmpty(consulta.AutoValidoParcial) ? "" : consulta.AutoValidoParcial, ParameterDirection.Input);
                AddCmdParameter("@Dependiente", string.IsNullOrEmpty(consulta.Dependiente) ? "" : consulta.Dependiente, ParameterDirection.Input);
                AddCmdParameter("@Motivo", string.IsNullOrEmpty(consulta.MotivoConsulta) ? "" : consulta.MotivoConsulta, ParameterDirection.Input);
                AddCmdParameter("@AntecedentesEnfermedad", string.IsNullOrEmpty(consulta.AntecedentesEnfermedad) ? "" : consulta.AntecedentesEnfermedad, ParameterDirection.Input);
                AddCmdParameter("@HistoriaId", consulta.HistoriaId, ParameterDirection.Input);

                ExecuteReader();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                DisposeCommand();
                //DisposeDataReader();
                CloseConnection();
            }
        }

        private ConsultaInicialDTO FillDTO(SqlDataReader reader)
        {
            return new ConsultaInicialDTO()
            {
                Id = Convert.ToInt32(GetOutResult("consultaId")),
                AutoValidoTotal = Convert.ToString(GetOutResult("autoValidoTotal")),
                AutoValidoParcial = Convert.ToString(GetOutResult("autoValidoParcial")),
                Dependiente = Convert.ToString(GetOutResult("dependiente")),
                MotivoConsulta = Convert.ToString(GetOutResult("motivoConsulta")),
                AntecedentesEnfermedad = Convert.ToString(GetOutResult("antecedentesEnfermedad")),
                HistoriaId = Convert.ToInt32(GetOutResult("historiaId")),
            };
        }

        public void Eliminar(int historiaId)
        {
            try
            {
                CreateCommand("ConsultaInicial_Eliminar", true);
                AddCmdParameter("@HistoriaId", historiaId, ParameterDirection.Input);

                ExecuteReader();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                DisposeCommand();
                //DisposeDataReader();
                CloseConnection();
            }
        }
    }
}
